Fix: Prevent kspaceFirstOrder3D from modifying input source and sensor#613
Closed
Fix: Prevent kspaceFirstOrder3D from modifying input source and sensor#613
Conversation
…sensor The kspaceFirstOrder3D simulation function was unintentionally modifying the input `source` and `sensor` objects. This occurred because the internal `kWaveSimulation` object and its helper functions were operating directly on these mutable input objects. This commit addresses the issue by: 1. Modifying `kWaveSimulation.__init__` to create deep copies of the input `source` and `sensor` objects. All internal operations within `kWaveSimulation` and its helper functions (like `save_to_disk_func` and `retract_transducer_grid_size`) now use these copies. The original objects you passed remain unchanged. 2. Adding a regression test (`tests/test_kspaceFirstOrder3D_state.py`). This test verifies that critical attributes of the `source` and `sensor` objects (e.g., `source.p0`, `sensor.mask`) are not altered after calls to `kspaceFirstOrder3D`, and that the function can be called multiple times with the same input objects without error or state corruption. This ensures that the `source` and `sensor` states remain consistent, allowing them to be reused for multiple simulations or checkpointing without unexpected side effects, resolving bug #600.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The kspaceFirstOrder3D simulation function was unintentionally modifying the input
sourceandsensorobjects. This occurred because the internalkWaveSimulationobject and its helper functions were operating directly on these mutable input objects.This commit addresses the issue by:
Modifying
kWaveSimulation.__init__to create deep copies of the inputsourceandsensorobjects. All internal operations withinkWaveSimulationand its helper functions (likesave_to_disk_funcandretract_transducer_grid_size) now use these copies. The original objects you passed remain unchanged.Adding a regression test (
tests/test_kspaceFirstOrder3D_state.py). This test verifies that critical attributes of thesourceandsensorobjects (e.g.,source.p0,sensor.mask) are not altered after calls tokspaceFirstOrder3D, and that the function can be called multiple times with the same input objects without error or state corruption.This ensures that the
sourceandsensorstates remain consistent, allowing them to be reused for multiple simulations or checkpointing without unexpected side effects, resolving bug #600.